﻿using FlyingCircusWebIS.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web.Mvc;

namespace FlyingCircusWebIS.ViewModels.PessoaVM
{
    public class PessoaCadastrarVM
    {
        [Required(ErrorMessage="Insira um nome.")]
        [StringLength(150, MinimumLength=8, ErrorMessage="O nome deve ter no mínimo 8 e no máximo 150 caracteres.")]
        [Display(Name="Nome *")]
        public string Nome { get; set; }

        public string Sexo { get; set; }

        [EmailAddress]
        [StringLength(100, MinimumLength=8, ErrorMessage="O email deve ter no mínimo 8 e no máximo 100 caracteres.")]
        [Required(ErrorMessage="Insira um email.")]
        [Display(Name = "E-mail *")]
        public string Email { get; set; }

        [Required(ErrorMessage="Insira um CPF.")]
        [CPF(true, ErrorMessage="Insira um CPF válido.")]
        [StringLength(14, MinimumLength = 14, ErrorMessage = "O CPF deve ter 14 caracteres.")]
        [Display(Name = "CPF *")]
        public string CPF { get; set; }

        [Required(ErrorMessage="Insira uma data de nascimento.")]
        [Display(Name="Data de nascimento *")]
        public string DataNascimento { get; set; }

        [StringLength(50, MinimumLength = 4, ErrorMessage = "A ocupação deve ter no mínimo 4 e no máximo 50 caracteres.")]
        [Display(Name = "Ocupação")]
        public string Ocupacao { get; set; }

        [StringLength(11, ErrorMessage="Insira uma renda válida.")]
        public string Renda { get; set; }

        [Display(Name = "Sim, eu gostaria de receber e-mails sobre ofertas. ")]
        public bool ReceberMarketing { get; set; }

        [StringLength(20, MinimumLength=4, ErrorMessage="O usuário deve ter no mínimo 4 e no máximo 20 caracteres.")]
        [Required(ErrorMessage="Insira um usuário.")]
        [Display(Name = "Usuário *")]
        public string Usuario { get; set; }

        [StringLength(300, MinimumLength=4, ErrorMessage="A senha deve ter no mínimo 4 e no máximo 300 caracteres.")]
        [Required(ErrorMessage="Insira uma senha.")]
        [Display(Name = "Senha *")]
        public string Senha { get; set; }

        [Display(Name="Senha confirmação *")]
        [System.ComponentModel.DataAnnotations.Compare("Senha", ErrorMessage="A senha não corresponde a anterior.")]
        public string SenhaConfirmacao { get; set; }

        [StringLength(14, MinimumLength = 13, ErrorMessage = "Insira o telefone corretamente.")]
        [Required(ErrorMessage = "Insira a primeira opção de telefone.")]
        [Display(Name = "Telefone *")]
        public string telefoneUm { get; set; }

        [StringLength(14, MinimumLength = 13, ErrorMessage = "Insira o telefone corretamente.")]
        [Display(Name = "Telefone opcional")]
        public string telefoneDois { get; set; }


        [Required(ErrorMessage="Insira um estado.")]
        [Display(Name = "Unidade Federativa *")]
        public string UF { get; set; }
        
        [Required(ErrorMessage = "Insira uma cidade.")]
        [Display(Name = "Cidade *")]
        public int IdCidade { get; set; }
        
        [Required(ErrorMessage = "Insira um logradouro.")]
        [StringLength(100, MinimumLength = 5, ErrorMessage = "O logradouro deve ter no mínimo 5 e no máximo 100 caracteres.")]
        [Display(Name = "Logradouro *")]
        public string Logradouro { get; set; }

        [Required(ErrorMessage = "Insira um número.")]
        [Range(typeof(Int32), "1" , "99999", ErrorMessage="Insira um número entre 1 e 99999")]
        [Display(Name = "Número *")]
        public string Numero { get; set; }

        [StringLength(100, MinimumLength = 3, ErrorMessage = "O complemento deve ter no mínimo 3 e no máximo 100 caracteres.")]
        public string Complemento { get; set; }

        [StringLength(9, MinimumLength = 9, ErrorMessage = "O complemento deve ter 8 caracteres.")]
        [Required(ErrorMessage="Insira um CEP.")]
        [Display(Name = "CEP *")]
        public string CEP { get; set; }



        // Itens para dropdown etc
        public List<SelectListItem> ItensUF { get; set; }
        public List<SelectListItem> ItensCidades { get; set; }


    }
}